The speed and efficiency of many computing applications depends upon the availability of processing resources. To this end, computing architectures such as the “virtual machine” design, developed by International Business Machines Corporation, share common processing resources among multiple processes. Such an architecture may conventionally rely upon a single computing machine having one or more physical processors, or central processing units (CPU's). The physical processors may execute software configured to simulate multiple virtual processors.
Virtual processors have particular application within a logically partitioned computing system. A partition may logically comprise a portion of a machine's physical processors, memory and other resources, as assigned by an administrator. As such, an administrator may share physical resources between partitions. Each partition typically hosts an operating system and may have multiple virtual processors. In this manner, each partition operates largely as if it is a separate computer.
An underlying program called a hypervisor, or partition manager, uses this scheme to assign and physical resources to each partition. For instance, the hypervisor may intercept requests for resources from operating systems to globally share and allocate them. If the partitions are sharing processors, the hypervisor allocates physical processors between the virtual processors of the partitions sharing the processor.
In an effort to increase the processing speed of computer systems where partitions are sharing processors, system designers commonly implement hypervisor calls. One hypervisor call generally comprises a request from a respective partition to the hypervisor asking to yield access to a physical processor. Virtual processors are dispatched to physical processors. Once the virtual processor is dispatched to a physical processor, a virtual processor can access the processing cycles required to do its work.
Despite the efficiencies afforded by logically partitioned computer systems, certain inherent complexities persist. For instance, sharing physical processors fundamentally requires that while one partition can access a physical processor, another partition that would otherwise use that physical processor must wait. Sub-partition level systems further require CPU cycles and other physical resources to perform, for instance, diagnostic work. This competition for resources can introduce problems concerning fairness of work distribution, i.e., which partitions will have access to a physical resource at a given time. There is consequently a continuing need for an improved manner distributing physical processor cycles throughout a logically partitioned environment.